import time

from _hellchin_webrun.src.core.browser.base import BaseTest
# from _hellchin_webrun.src.core.utils.logger.run_logger import TestLogger

from _hellchin_webrun.src.core.utils.chinese_alias import KeyWordManage


class PageNavMixin(BaseTest):
    """页面操作相关方法"""

    def open_url(self, url, wait_until="load", timeout=3000):
        """
        打开url

        :param url: 网页地址
        :param wait_until: 等待的状态，默认为load
        :param timeout:  超时时间
        :return:
        """

        # 判断url是否为完整的地址，如果不是完整的地址，则需要根据测试环境的host拼接成完整的地址
        if all([not url.startswith("http"), not url.startswith("https")]):
            url = self.config.host + url

        self.log.info("打开页面", url)
        self.page.goto(url, wait_until=wait_until, timeout=timeout)
        self.log.info("打开页面", url)

    def refresh(self):
        """刷新页面"""
        # print("正在刷新页面")
        self.log.info("刷新页面")
        self.page.reload()
        self.log.info("刷新页面")

    def go_back(self):
        """返回上一页"""
        # print("正在返回上一页")
        self.log.info("返回上一页")
        self.page.go_back()
        self.log.info("返回上一页")

    def go_forward(self):
        """前进到下一页"""
        # print("正在前进到下一页")
        self.log.info("前进到下一页")
        self.page.go_forward()
        self.log.info("前进到下一页")

    @KeyWordManage.chinese_alias("页面截图")
    def save_page_img(self, name='001', path='./files'):
        """
        保存页面截图
        :param name: 截图的名称
        :param path: 截图保存的路径
        :return: 截图的路径
        """
        try:
            # if not path:
            #     path = self.case_image_path
            t = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())

            # 进行截图操作
            filename = f"{path}/{name}_{t}.png"
            self.log.info(f'*******正在对页面进行截图，保存路径为：{filename}*******')
            self.page.screenshot(path=filename)
            return filename
        except Exception as e:
            self.log.info(f"************保存页面截图失败，失败原因*************")
            self.log.info(e)
            return ''
